$.ajaxSetup({
  headers: {
    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  }
});

$.fn.extend({
  scrollTo: function(targetFilter, duration){
    if(typeof(duration) == 'undefined'){
      duration = 100;
    }
    if($(this).find(targetFilter).length > 0){
      return $(this).animate({
        scrollTop: $(this).find(targetFilter).offset().top,
      }, duration);
    }
    return $(this);
  }
});

$.fn.extend({
  ajaxForm: function(){
    $(this).on('submit', function(e){
      e.preventDefault();

      if(typeof($.fn.ajaxSubmit) == 'undefined'){
        return false;
      }

      var $form = $(this);
      var $btn = $form.find('[type="submit"]');

      $form.find('.has-error').removeClass('has-danger');
      $(this).ajaxSubmit({
        dataType: 'json',
        beforeSerialize: function($form, options){
          var res = $form.triggerHandler('beforeSerialize', [$form, options]);
          if(res === false){
            return false;
          }
        },
        beforeSubmit: function(arr, $form, options){
          var res = $form.triggerHandler('beforeSubmit', [arr, $form, options]);
          if(res === false){
            return false;
          }
          $form.find('.error-message').remove();
          $btn.prop("disabled", true);
          if($btn.attr('data-loading-text')){
            $btn.button('loading');
          }
        },
        success: function(data, status, xhr, form){
          var $form = $(form);
          $form.find('.has-danger').removeClass('has-danger');
          $form.find('.form-group-alert').remove();
          $form.triggerHandler('success', [data, $form]);
          $btn.prop("disabled", false);
          if($btn.attr('data-loading-text')){
            $btn.button('reset');
          }
        },
        error: function(xhr, status, error, form){
          var $form = $(form);
          var data = xhr.responseJSON;
          if(typeof(data) == 'undefined') {
            data = {
              'message': '',
              'errors': []
            };
          }
          else{
            var firstKey = '';
            for(var key in data['errors']){
              if (firstKey == ''){
                firstKey = key;
              }
              var errorMessage = data['errors'][key];
              var $element = $form.find('[name=' + key + ']').length>0 ? $form.find('[name=' + key + ']').eq(0) : $form.find('[name="' + key + '[]"]').eq(0);
              var $formGroup = $element.parents('.form-group');
              console.log($formGroup);
              var $inputGroup = $element.parents('.input-group');
              console.log($inputGroup);
              $formGroup.addClass("has-danger");
              $inputGroup.after('<small class="text-help error-message">' + errorMessage[0] + '</small>');
            }
          }

          $form.triggerHandler('error', [data, $form]);
          // $form.find(".has-error-appending").removeClass("has-error-appending").addClass("has-error");
          
          $btn.prop("disabled", false);
          if($btn.attr('data-loading-text')){
            $btn.button('reset');
          }
        }
        });
    });
    return $(this);
  }
});

$(document).ready(function(){
  $('form.ajax').ajaxForm();
});

jQuery(function($){
	Site.run();

  // // Widget Linearea One
  // // ---------------------
  // (function() {
  //   //chart-linearea-one
  //   new Chartist.Line('#widgetLineareaOne .ct-chart', {
  //     labels: ['1', '2', '3', '4', '5', '6', '7', '8'],
  //     series: [
  //       [0, 1, 3, 2, 3.5, 1.2, 1.5, 0]
  //     ]
  //   }, {
  //     low: 0,
  //     showArea: true,
  //     showPoint: false,
  //     showLine: false,
  //     fullWidth: true,
  //     chartPadding: {
  //       top: 0,
  //       right: 0,
  //       bottom: 0,
  //       left: 0
  //     },
  //     axisX: {
  //       showLabel: false,
  //       showGrid: false,
  //       offset: 0
  //     },
  //     axisY: {
  //       showLabel: false,
  //       showGrid: false,
  //       offset: 0
  //     }
  //   });
  // })();

  // // Widget Linearea Two
  // // ---------------------
  // (function() {
  //   //chart-linearea-two
  //   new Chartist.Line('#widgetLineareaTwo .ct-chart', {
  //     labels: ['1', '2', '3', '4', '5', '6', '7', '8', '9'],
  //     series: [
  //       [0, 0.5, 2.2, 2, 2.8, 2.3, 3.3, 2.5, 0]
  //     ]
  //   }, {
  //     low: 0,
  //     showArea: true,
  //     showPoint: false,
  //     showLine: false,
  //     fullWidth: true,
  //     chartPadding: {
  //       top: 0,
  //       right: 0,
  //       bottom: 0,
  //       left: 0
  //     },
  //     axisX: {
  //       showLabel: false,
  //       showGrid: false,
  //       offset: 0
  //     },
  //     axisY: {
  //       showLabel: false,
  //       showGrid: false,
  //       offset: 0
  //     }
  //   });
  // })();

  // // Widget Linearea Three
  // // ---------------------
  // (function() {
  //   //chart-linearea-three
  //   new Chartist.Line('#widgetLineareaThree .ct-chart', {
  //     labels: ['1', '2', '3', '4', '5', '6', '7', '8'],
  //     series: [
  //       [0, 2, 1.5, 3.5, 2.2, 3, 0.8, 0]
  //     ]
  //   }, {
  //     low: 0,
  //     showArea: true,
  //     showPoint: false,
  //     showLine: false,
  //     fullWidth: true,
  //     chartPadding: {
  //       top: 0,
  //       right: 0,
  //       bottom: 0,
  //       left: 0
  //     },
  //     axisX: {
  //       showLabel: false,
  //       showGrid: false,
  //       offset: 0
  //     },
  //     axisY: {
  //       showLabel: false,
  //       showGrid: false,
  //       offset: 0
  //     }
  //   });
  // })();

  // // Widget Linearea Four
  // // ---------------------
  // (function() {
  //   //chart-linearea-four
  //   new Chartist.Line('#widgetLineareaFour .ct-chart', {
  //     labels: ['1', '2', '3', '4', '5', '6', '7', '8', '9'],
  //     series: [
  //       [0, 1.2, 2.4, 2.5, 3.5, 2, 2.5, 1.2, 0]
  //     ]
  //   }, {
  //     low: 0,
  //     showArea: true,
  //     showPoint: false,
  //     showLine: false,
  //     fullWidth: true,
  //     chartPadding: {
  //       top: 0,
  //       right: 0,
  //       bottom: 0,
  //       left: 0
  //     },
  //     axisX: {
  //       showLabel: false,
  //       showGrid: false,
  //       offset: 0
  //     },
  //     axisY: {
  //       showLabel: false,
  //       showGrid: false,
  //       offset: 0
  //     }
  //   });
  // })();

  // // Widget VectorMap
  // // ----------------
  // (function() {
  //   var defaults = Plugin.getDefaults('vectorMap');
  //   var options = $.extend({}, defaults, {
  //     markers: [{
  //       latLng: [39.9, 116.3],
  //       name: '1,512 Visits'
  //     }, {
  //       latLng: [40.43, -75],
  //       name: '940 Visits'
  //     }, {
  //       latLng: [-33.55, 151],
  //       name: '340 Visits'
  //     }],
  //   }, true);

  //   $('#widgetJvmap').vectorMap(options);
  // })();

  // // Widget Current Chart
  // // --------------------
  // (function() {
  //   //chart-bar-withfooter
  //   new Chartist.Bar('#widgetCurrentChart .ct-chart', {
  //     labels: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
  //     series: [
  //       [160, 390, 280, 440, 410, 360, 200],
  //       [600 - 160, 600 - 390, 600 - 280, 600 - 440, 600 - 410, 600 - 360, 600 - 200]
  //     ]
  //   }, {
  //     stackBars: true,
  //     fullWidth: true,
  //     seriesBarDistance: 0,
  //     axisX: {
  //       showLabel: true,
  //       showGrid: false,
  //       offset: 30
  //     },
  //     axisY: {
  //       showLabel: true,
  //       showGrid: false,
  //       offset: 30,
  //       labelOffset: {
  //         x: 0,
  //         y: 15
  //       }
  //     }
  //   });
  // })();

  Waves.attach('.page-content .btn-floating', ['waves-light']);

	$('#toggleMenubar').click(function(){
		var foldedMenu = !$('body').hasClass('site-menubar-fold');
		$.post($(this).attr('data-send-status'), {'fold':foldedMenu});
	});

  
});